Skip to content

ci(pack): enable PackageValidation with per-package baselines (#175) - #190

Merged
Chris-Wolfgang merged 1 commit into
mainfrom
feat/175-packagevalidation-baseline
Aug 21, 2026
Merged

Chris-Wolfgang merged 1 commit into
mainfrom
feat/175-packagevalidation-baseline

Conversation

@Chris-Wolfgang

Copy link
Copy Markdown
Owner

Summary

Adds the fleet-standard PackageValidation gate to both shipped csprojs so dotnet pack runs Microsoft.DotNet.ApiCompat against the last-published NuGet version. Accidental ABI breaks — removed / renamed / type-changed public members, dropped TFMs — fail pack instead of shipping.

Fleet precedent: Try-Pattern Chris-Wolfgang/Try-Pattern#319 (same pattern, same rationale comment).

Closes #175.

Baselines (per current NuGet state)

Package Latest published Baseline
Wolfgang.Extensions.Logging.Data 0.3.0 0.3.0
Wolfgang.Extensions.Logging.Data.EntityFramework6 0.2.0 0.2.0

EF6 lags the main package's cadence (last EF6 release was 0.2.0 while Data is at 0.3.0), so the two csprojs pin different baselines. Each will bump independently after its next release, tracked by the maintenance-step comment.

Local validation

dotnet pack -c Release -v:normal on both projects:

RunPackageValidation:
  APICompat ran successfully without finding any breaking changes.

No ABI breaks between current main and either baseline — no code changes needed for this to land.

Maintenance step this institutes

Every future release should bump <PackageValidationBaselineVersion> to whatever version just shipped, as a post-deploy PR — per feedback_post_deploy_baseline_bump and reference_packagevalidation_baseline_timing. Comment in each csproj records this so a future maintainer sees it without hunting.

Test plan

  • dotnet pack -c Release -v:normal on both csprojs — validation ran, zero breaks
  • CI: Reproducible Build job packs and should also succeed
  • release.yaml (when the next release cuts) exercises the gate at release time — nothing to test here until then

Notes for the maintainer

  • No workflow files touched → protected-file guard does NOT fire. Standard PR flow (no admin bypass needed).
  • Two src csprojs, one XML block per project (~12 lines of comment + 2 lines of properties each).

🤖 Generated with Claude Code

Adds the fleet-standard PackageValidation gate to both shipped csprojs so
`dotnet pack` runs Microsoft.DotNet.ApiCompat against the last-published
NuGet version. Accidental ABI breaks — removed / renamed / type-changed
public members, dropped TFMs — fail pack instead of shipping.

Baselines (per current NuGet state):

  Wolfgang.Extensions.Logging.Data                → 0.3.0
  Wolfgang.Extensions.Logging.Data.EntityFramework6 → 0.2.0

EF6 lags the main package's cadence (last release was 0.2.0 while Data
is at 0.3.0), so the two csprojs pin different baselines. Each will bump
independently after its next release.

Local `dotnet pack -c Release -v:normal` on both projects reports
`RunPackageValidation: APICompat ran successfully without finding any
breaking changes` — no ABI breaks between the current main and either
published baseline, so this lands cleanly.

Multi-line comment in each csproj explains the mechanism, the
maintenance step (baseline bump after every release per the per-repo
release flow), and the release.yaml pack-and-validate exercise path.

Closes #175.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 21, 2026 01:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chris-Wolfgang
Chris-Wolfgang merged commit e8ba64f into main Aug 21, 2026
20 checks passed
@Chris-Wolfgang
Chris-Wolfgang deleted the feat/175-packagevalidation-baseline branch August 21, 2026 01:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Extensions-Logging-Data has no PackageValidation gate

2 participants